// include/fuzzy_matching.h
#ifndef FUZZY_MATCHING_H
#define FUZZY_MATCHING_H

#include <string>
#include <unordered_map>

// 加载拼音映射文件
bool load_pinyin_map(const std::string& file_path);

// 将文本转换为拼音
std::string text_to_pinyin(const std::string& text);

// 计算两个拼音字符串的相似度（基于最长公共子序列的比例）
double calculate_similarity(const std::string& pinyin1, const std::string& pinyin2);

// 计算两个拼音字符串的编辑距离（Levenshtein distance）
int calculate_edit_distance(const std::string& pinyin1, const std::string& pinyin2);

// 判断是否匹配
bool is_match(const std::string& original_text, const std::string& recognized_text,
    double similarity_threshold = 0.9, int max_edit_distance = 5,
    double max_length_diff_ratio = 0.15);

/*---------------------测试中文是否乱码---------------------*/
std::string show();
std::string test();
/*---------------------测试中文是否乱码---------------------*/

#endif // FUZZY_MATCHING_H
